home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_098 / thai / global.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  12KB  |  348 lines

  1.  
  2. #include "quiz.h"
  3.  
  4. struct Window *window = NULL;
  5.  
  6. int file_changed = FALSE;
  7. int scanning = -1;
  8. char *wordptr = NULL;
  9. int show_sentence = 0;
  10. int show_word = 0;
  11. int entry = -1;    /* TW_ENTRY or TS_ENTRY for thai text entry */
  12.  
  13. struct thai_phrase sentence_head =
  14.     { "" , "" , "" , 0 , 0 , NULL , NULL };
  15.  
  16. struct thai_phrase word_head =
  17.     { "" , "" , "" , 0 , 0 , NULL , NULL };
  18.  
  19. static char buf[9][MAX_STRING];        /* warning - also refered to by sinfo[] */
  20.  
  21. struct thai_phrase screen_sentence =
  22.     { &buf[0][0] , &buf[1][0] , &buf[2][0] , 0 , 0 , NULL , NULL };
  23.  
  24. struct thai_phrase screen_word =
  25.     { &buf[3][0] , &buf[4][0] , &buf[5][0] , 0 , 0 , NULL , NULL };
  26.  
  27. struct thai_phrase scan =
  28.     { &buf[6][0] , &buf[7][0] , &buf[8][0] , 0 , 0 , NULL , NULL };
  29.  
  30. struct thai_phrase *chosen_sentence = &sentence_head;
  31.  
  32. struct thai_phrase *chosen_word = &word_head;
  33.  
  34. static struct IntuiText CmdIntuiText[ NUM_CMDS ] = {
  35.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Sentence" , NULL } ,
  36.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Speak" , NULL } ,
  37.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Thai" , NULL } ,
  38.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Phonetic" , NULL } ,
  39.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"English" , NULL } ,
  40.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Right" , NULL } ,
  41.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Wrong" , NULL } ,
  42.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Add" , NULL } ,
  43.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Delete" , NULL } ,
  44.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  45.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  46.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  47.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Word" , NULL } ,
  48.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Speak" , NULL } ,
  49.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Thai" , NULL } ,
  50.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Phonentic" , NULL } ,
  51.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"English" , NULL } ,
  52.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Right" , NULL } ,
  53.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Wrong" , NULL } ,
  54.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Add" , NULL } ,
  55.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Delete" , NULL } ,
  56.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  57.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  58.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Search" , NULL } ,
  59.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Next" , NULL } ,
  60.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Prev" , NULL } ,
  61.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"TSEntry" , NULL } ,
  62.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"PSEntry" , NULL } ,
  63.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"ESEntry" , NULL } ,
  64.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"TWEntry" , NULL } ,
  65.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"PWEntry" , NULL } ,
  66.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"EWEntry" , NULL } ,
  67.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Translate" , NULL } ,
  68.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Translate" , NULL } ,
  69.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Replace" , NULL } ,
  70.     { FP , BP , JAM1 , 4 , 2 , NULL , (UBYTE*)"Replace" , NULL }
  71. };
  72.  
  73.  
  74. static USHORT up_data[12*2] = {
  75.     0x0000 , 0x0000 ,
  76.     0x0001 , 0x0000 ,
  77.     0x0003 , 0x8000 ,
  78.     0x0007 , 0xC000 ,
  79.     0x000F , 0xE000 ,
  80.     0x001F , 0xF000 ,
  81.     0x003F , 0xF800 ,
  82.     0x007F , 0xFC00 ,
  83.     0x00FF , 0xFE00 ,
  84.     0x01FF , 0xFF00 ,
  85.     0x03FF , 0xFF80 ,
  86.     0x0000 , 0x0000
  87. };
  88.  
  89. static USHORT down_data[12*2] = {
  90.     0x0000 , 0x0000 ,
  91.     0x03FF , 0xFF80 ,
  92.     0x01FF , 0xFF00 ,
  93.     0x00FF , 0xFE00 ,
  94.     0x007F , 0xFC00 ,
  95.     0x003F , 0xF800 ,
  96.     0x001F , 0xF000 ,
  97.     0x000F , 0xE000 ,
  98.     0x0007 , 0xC000 ,
  99.     0x0003 , 0x8000 ,
  100.     0x0001 , 0x0000 ,
  101.     0x0000 , 0x0000
  102. };
  103.  
  104. static struct Image up_image =
  105.     { 0 , 0 , 31 , 12 , 1 , &up_data[0] , 1 , 0 , NULL };
  106.  
  107. static struct Image down_image =
  108.     { 0 , 0 , 31 , 12 , 1 , &down_data[0] , 1 , 0 , NULL };
  109.  
  110. static UBYTE undo[MAX_STRING];
  111.  
  112. static struct StringInfo sinfo[6] = {
  113.     { (UBYTE*)&buf[0][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  114.         NULL , 0 , NULL } ,
  115.     { (UBYTE*)&buf[1][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  116.         NULL , 0 , NULL } ,
  117.     { (UBYTE*)&buf[2][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  118.         NULL , 0 , NULL } ,
  119.     { (UBYTE*)&buf[3][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  120.         NULL , 0 , NULL } ,
  121.     { (UBYTE*)&buf[4][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  122.         NULL , 0 , NULL } ,
  123.     { (UBYTE*)&buf[5][0] , undo , 0 , MAX_STRING , 0 , 0 , 0 , 0 , 0 , 0 ,
  124.         NULL , 0 , NULL }
  125. };
  126.  
  127. #define NUM_PAIRS    5
  128. static SHORT smallbox[ NUM_PAIRS*2 ] = {
  129.     -4,-2,
  130.     486,-2,
  131.     486,10,
  132.     -4,10,
  133.     -4,-2
  134. };
  135.  
  136. static SHORT bigbox[ NUM_PAIRS*2 ] = {
  137.     -4,-2,
  138.     486,-2,
  139.     486,24,
  140.     -4,24,
  141.     -4,-2
  142. };
  143.  
  144. static SHORT normbox[ NUM_PAIRS * 2 ] = {
  145.     0,0,
  146.     78,0,
  147.     78,11,
  148.     0,11,
  149.     0,0
  150. };
  151.  
  152. static SHORT searchbox[ NUM_PAIRS * 2 ] = {
  153.     0,0,
  154.     62,0,
  155.     62,11,
  156.     0,11,
  157.     0,0
  158. };
  159.  
  160. static struct Border smallborder =
  161.     { 0 , 0 , FP , BP , JAM1 , NUM_PAIRS , smallbox , NULL };
  162.  
  163. static struct Border bigborder =
  164.     { 0 , 0 , FP , BP , JAM1 , NUM_PAIRS , bigbox , NULL };
  165.  
  166. static struct Border normborder =
  167.     { 0 , 0 , 3 , 2 , JAM1 , NUM_PAIRS , normbox , NULL };
  168.  
  169. static struct Border searchborder =
  170.     { 0 , 0 , 3 , 2 , JAM1 , NUM_PAIRS , searchbox , NULL };
  171.  
  172. struct Gadget CmdGadget[ NUM_CMDS ] = {
  173.     { NULL , 2 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  174.         (APTR)&normborder , NULL , &CmdIntuiText[ CHOOSE_SENTENCE ] , 0 , NULL,
  175.         CHOOSE_SENTENCE , NULL } ,
  176.     { NULL , 2 , 92 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  177.         (APTR)&normborder , NULL , &CmdIntuiText[ SPEAK_SENTENCE ] , 0 , NULL ,
  178.         SPEAK_SENTENCE , NULL } ,
  179.     { NULL , 2 , 79 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  180.         (APTR)&normborder , NULL , &CmdIntuiText[ THAI_SENTENCE ] , 0 , NULL ,
  181.         THAI_SENTENCE , NULL } ,
  182.     { NULL , 2 , 106 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  183.         (APTR)&normborder , NULL , &CmdIntuiText[ PHONETIC_SENTENCE ], 0, NULL,
  184.         PHONETIC_SENTENCE , NULL } ,
  185.     { NULL , 2 , 119 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  186.         (APTR)&normborder , NULL , &CmdIntuiText[ ENGLISH_SENTENCE ] , 0, NULL,
  187.         ENGLISH_SENTENCE , NULL } ,
  188.     { NULL , 84 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  189.         (APTR)&normborder , NULL , &CmdIntuiText[ RIGHT_SENTENCE ] , 0 , NULL ,
  190.         RIGHT_SENTENCE , NULL } ,
  191.     { NULL , 166 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  192.         (APTR)&normborder , NULL , &CmdIntuiText[ WRONG_SENTENCE ] , 0 , NULL ,
  193.         WRONG_SENTENCE , NULL } ,
  194.     { NULL , 248 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  195.         (APTR)&normborder , NULL , &CmdIntuiText[ ADD_SENTENCE ] , 0 , NULL ,
  196.         ADD_SENTENCE , NULL } ,
  197.     { NULL , 330 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  198.         (APTR)&normborder , NULL , &CmdIntuiText[ DEL_SENTENCE ] , 0 , NULL ,
  199.         DEL_SENTENCE , NULL } ,
  200.     { NULL , 574 , 79 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  201.         (APTR)&searchborder , NULL , &CmdIntuiText[ TS_SEARCH ] , 0 , NULL ,
  202.         TS_SEARCH , NULL } ,
  203.     { NULL , 574 , 106 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  204.         (APTR)&searchborder , NULL , &CmdIntuiText[ PS_SEARCH ] , 0 , NULL ,
  205.         PS_SEARCH , NULL } ,
  206.     { NULL , 574 , 119 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  207.         (APTR)&searchborder , NULL , &CmdIntuiText[ ES_SEARCH ] , 0 , NULL ,
  208.         ES_SEARCH , NULL } ,
  209.     { NULL , 2 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  210.         (APTR)&normborder , NULL , &CmdIntuiText[ CHOOSE_WORD ] , 0 , NULL ,
  211.         CHOOSE_WORD , NULL } ,
  212.     { NULL , 2 , 159 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  213.         (APTR)&normborder , NULL , &CmdIntuiText[ SPEAK_WORD ] , 0 , NULL ,
  214.         SPEAK_WORD , NULL } ,
  215.     { NULL , 2 , 146 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  216.         (APTR)&normborder , NULL , &CmdIntuiText[ THAI_WORD ] , 0 , NULL ,
  217.         THAI_WORD , NULL } ,
  218.     { NULL , 2 , 173 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  219.         (APTR)&normborder , NULL , &CmdIntuiText[ PHONETIC_WORD ] , 0 , NULL ,
  220.         PHONETIC_WORD , NULL } ,
  221.     { NULL , 2 , 186 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  222.         (APTR)&normborder , NULL , &CmdIntuiText[ ENGLISH_WORD ] , 0 , NULL ,
  223.         ENGLISH_WORD , NULL } ,
  224.     { NULL , 84 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  225.         (APTR)&normborder , NULL , &CmdIntuiText[ RIGHT_WORD ] , 0 , NULL ,
  226.         RIGHT_WORD , NULL } ,
  227.     { NULL , 166 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  228.         (APTR)&normborder , NULL , &CmdIntuiText[ WRONG_WORD ] , 0 , NULL ,
  229.         WRONG_WORD , NULL } ,
  230.     { NULL , 248 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  231.         (APTR)&normborder , NULL , &CmdIntuiText[ ADD_WORD ] , 0 , NULL ,
  232.         ADD_WORD , NULL } ,
  233.     { NULL , 330 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  234.         (APTR)&normborder , NULL , &CmdIntuiText[ DEL_WORD ] , 0 , NULL ,
  235.         DEL_WORD , NULL } ,
  236.     { NULL , 574 , 146 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  237.         (APTR)&searchborder , NULL , &CmdIntuiText[ TW_SEARCH ] , 0 , NULL ,
  238.         TW_SEARCH , NULL } ,
  239.     { NULL , 574 , 173 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  240.         (APTR)&searchborder , NULL , &CmdIntuiText[ PW_SEARCH ] , 0 , NULL ,
  241.         PW_SEARCH , NULL } ,
  242.     { NULL , 574 , 186 , 63 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  243.         (APTR)&searchborder , NULL , &CmdIntuiText[ EW_SEARCH ] , 0 , NULL ,
  244.         EW_SEARCH , NULL } ,
  245.     { NULL , 607 , 133 , 31 , 12 , GADGHCOMP|GADGIMAGE
  246. #ifdef USE_ON_OFF
  247.         |GADGDISABLED
  248. #endif
  249.         ,
  250.         RELVERIFY , BOOLGADGET , (APTR)&down_image , NULL , NULL , 0 , NULL ,
  251.         NEXT_ENTRY , NULL } ,
  252.     { NULL , 574 , 133 , 31 , 12 , GADGHCOMP|GADGIMAGE
  253. #ifdef USE_ON_OFF
  254.         |GADGDISABLED
  255. #endif
  256.         ,
  257.         RELVERIFY , BOOLGADGET , (APTR)&up_image , NULL , NULL , 0 , NULL ,
  258.         PREV_ENTRY , NULL } ,
  259.     { NULL , TSBASEX , TSBASEY , TSWIDTH , 22 , GADGHCOMP , RELVERIFY ,
  260.         BOOLGADGET , (APTR)&bigborder , NULL , NULL , 0 , NULL ,
  261.         TS_ENTRY , NULL } ,
  262.     { NULL , 86 , 108 , 484 , 8 , GADGHCOMP , RELVERIFY , STRGADGET ,
  263.         (APTR)&smallborder , NULL , NULL , 0 , (APTR)&sinfo[1] , PS_ENTRY ,
  264.         NULL } ,
  265.     { NULL , 86 , 121 , 484 , 8 , GADGHCOMP , RELVERIFY , STRGADGET ,
  266.         (APTR)&smallborder , NULL , NULL , 0 , (APTR)&sinfo[2] , ES_ENTRY ,
  267.         NULL } ,
  268.     { NULL , TWBASEX , TWBASEY , TWWIDTH , 22 , GADGHCOMP , RELVERIFY ,
  269.         BOOLGADGET , (APTR)&bigborder , NULL , NULL , 0 , NULL ,
  270.         TW_ENTRY , NULL } ,
  271.     { NULL , 86 , 175 , 484 , 8 , GADGHCOMP , RELVERIFY , STRGADGET ,
  272.         (APTR)&smallborder , NULL , NULL , 0 , (APTR)&sinfo[4] , PW_ENTRY ,
  273.         NULL } ,
  274.     { NULL , 86 , 188 , 484 , 8 , GADGHCOMP , RELVERIFY , STRGADGET ,
  275.         (APTR)&smallborder , NULL , NULL , 0 , (APTR)&sinfo[5] , EW_ENTRY ,
  276.         NULL } ,
  277.     { NULL , 494 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  278.         (APTR)&normborder , NULL , &CmdIntuiText[ TRANSLATE_SENTENCE ] , 0 ,
  279.         NULL , TRANSLATE_SENTENCE , NULL } ,
  280.     { NULL , 494 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  281.         (APTR)&normborder , NULL , &CmdIntuiText[ TRANSLATE_WORD ] , 0 ,
  282.         NULL , TRANSLATE_WORD , NULL } ,
  283.     { NULL , 412 , 66 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  284.         (APTR)&normborder , NULL , &CmdIntuiText[ REPLACE_SENTENCE ] , 0 ,
  285.         NULL , REPLACE_SENTENCE , NULL } ,
  286.     { NULL , 412 , 133 , 79 , 12 , GADGHCOMP , RELVERIFY , BOOLGADGET ,
  287.         (APTR)&normborder , NULL , &CmdIntuiText[ REPLACE_WORD ] , 0 ,
  288.         NULL , REPLACE_WORD , NULL }
  289. };
  290.  
  291.  
  292.  
  293. init_globals ()
  294. {
  295.     int i;
  296.  
  297.     for ( i = 0; i < NUM_CMDS; i++ )
  298.         AddGadget ( window , &CmdGadget[ i ] , (LONG)-1 );
  299.     RefreshGadgets ( window->FirstGadget , window , (LONG)NULL );
  300. }
  301.  
  302.  
  303. refresh_gadget ( num )
  304. int num;
  305. {
  306.     if ( num == TW_ENTRY || num == TS_ENTRY )
  307.         redraw_thai ( num );
  308.     RefreshGadgets ( &CmdGadget[ num ] , window , (LONG)NULL );
  309. }
  310.  
  311.  
  312. refresh_screen ()
  313. {
  314.     redraw_thai ( TW_ENTRY );
  315.     redraw_thai ( TS_ENTRY );
  316.     RefreshGadgets ( &CmdGadget[ TS_ENTRY ] , window , (LONG)NULL );
  317. }
  318.  
  319.  
  320. clr_screen ()
  321. {
  322.     screen_sentence.thai[0] = '\0';
  323.     screen_sentence.phonetic[0] = '\0';
  324.     screen_sentence.english[0] = '\0';
  325.     screen_word.thai[0] = '\0';
  326.     screen_word.phonetic[0] = '\0';
  327.     screen_word.english[0] = '\0';
  328.     refresh_screen ();
  329. }
  330.  
  331.  
  332. clr_word ()
  333. {
  334.     screen_word.thai[0] = '\0';
  335.     screen_word.phonetic[0] = '\0';
  336.     screen_word.english[0] = '\0';
  337.     refresh_screen ();
  338. }
  339.  
  340.  
  341. clr_sentence ()
  342. {
  343.     screen_sentence.thai[0] = '\0';
  344.     screen_sentence.phonetic[0] = '\0';
  345.     screen_sentence.english[0] = '\0';
  346.     refresh_screen ();
  347. }
  348.